// Token管理功能测试工具
import { useUserStore } from '@/stores/user'
import { TOKEN_EXPIRY_OPTIONS, formatRemainingTime } from './tokenManager'

// 模拟用户数据
const mockUser = {
  id: 1,
  uuid: 'test-uuid',
  username: 'testuser',
  email: 'test@example.com',
  subscriptionType: 'free'
}

// 测试token管理功能
export const testTokenManagement = () => {
  console.log('🧪 开始测试Token管理功能...\n')
  
  const userStore = useUserStore()
  
  // 测试1: 设置短期token（1分钟，用于测试）
  console.log('📝 测试1: 设置1分钟过期的token')
  const testToken = 'test-token-' + Date.now()
  userStore.setToken(testToken, 1/60) // 1分钟
  
  console.log('✅ Token已设置')
  console.log('🔍 当前登录状态:', userStore.isAuthenticated)
  console.log('⏰ 剩余时间:', formatRemainingTime(userStore.getTokenRemainingTime()))
  console.log('⚠️  即将过期:', userStore.isTokenExpiringSoon(2))
  console.log('')
  
  // 测试2: 模拟登录
  console.log('📝 测试2: 模拟完整登录流程')
  userStore.login(testToken, mockUser, 24) // 24小时
  
  console.log('✅ 登录完成')
  console.log('👤 用户信息:', userStore.user?.username)
  console.log('🔍 登录状态:', userStore.isAuthenticated)
  console.log('⏰ 剩余时间:', formatRemainingTime(userStore.getTokenRemainingTime()))
  console.log('')
  
  // 测试3: 不同过期时间选项
  console.log('📝 测试3: 不同过期时间选项')
  Object.entries(TOKEN_EXPIRY_OPTIONS).forEach(([key, hours]) => {
    console.log(`${key}: ${hours}小时 (${formatRemainingTime(hours * 60)}分钟)`)
  })
  console.log('')
  
  // 测试4: 清除token
  console.log('📝 测试4: 清除token')
  userStore.clearUser()
  
  console.log('✅ Token已清除')
  console.log('🔍 登录状态:', userStore.isAuthenticated)
  console.log('👤 用户信息:', userStore.user)
  console.log('')
  
  console.log('🎉 Token管理功能测试完成！')
}

// 模拟token过期测试
export const testTokenExpiration = () => {
  console.log('🧪 开始测试Token过期功能...\n')
  
  const userStore = useUserStore()
  
  // 设置一个已过期的token
  const expiredTokenData = {
    token: 'expired-token',
    expiresAt: Date.now() - 1000, // 1秒前过期
    refreshToken: 'refresh-token'
  }
  
  // 直接设置过期的token数据
  localStorage.setItem('tokenData', JSON.stringify(expiredTokenData))
  localStorage.setItem('user', JSON.stringify(mockUser))
  
  // 初始化用户状态
  userStore.initUser()
  
  console.log('📝 设置过期token并初始化')
  console.log('🔍 登录状态:', userStore.isAuthenticated)
  console.log('👤 用户信息:', userStore.user)
  console.log('💾 LocalStorage tokenData:', localStorage.getItem('tokenData'))
  console.log('')
  
  console.log('✅ 过期token自动清除测试完成！')
}

// 在浏览器控制台中使用：
// import { testTokenManagement, testTokenExpiration } from '@/utils/tokenTest'
// testTokenManagement()
// testTokenExpiration()

if (typeof window !== 'undefined') {
  // 将测试函数暴露到全局，方便在控制台调用
  ;(window as any).testTokenManagement = testTokenManagement
  ;(window as any).testTokenExpiration = testTokenExpiration
  
  console.log('💡 Token测试工具已加载！在控制台输入以下命令进行测试：')
  console.log('  testTokenManagement() - 测试基本功能')
  console.log('  testTokenExpiration() - 测试过期处理')
}
